iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
自我挑戰組

I don't know JS yet系列 第 10

[ Day 10 ] I don't know JS yet - Functions

  • 分享至 

  • xImage
  •  

今天,我想來點 Functions。

Overview:

在 JS,functions

  1. 是 object values ( 與之相對的是 primitive values,如字串、數字、布林值、undefind、NULL )
  2. 因為是 values,所以 values 可以做的 function 都可以。例如:被當作參數傳入另外一個 function;
    被另外一個 function return 出去等等。
  3. console.log(typeof function greeting(){ ... }); // "function"
  4. 可以分為「函式陳述式」與「函式表達式」
  5. 把 functions 想成工廠,這個工廠可以接受訂單,產出產品

函式陳述式 (Function declaration)

較早的 JS function 長得像這樣,也就是函式陳述式

    function awesomeFunction(coolThings) {
        ...
        return amazingStuff;
    }

函式的 identifier (awesomeFunction) 與函式的值之間的關聯,在 compile (編譯) 時期會建立起來,也就是在執行之前,函式的 identifier 與函式的 value 的關係,已經確定了。

函式表達式 (Function expression)

另外一種定義函式的方法,就是函式表達式

    var awesomeFunction = function(coolThings) {
        ...
        return amazingStuff;
    };

函式表達式最大的特徵,就是有 assign operator '=',將等號右邊的匿名函式,assign 給左邊的變數 (還記得在 JS,函式就是 values 嗎?)。不同於函式陳述式,函式表達式的 identifier 與函式的 value 要等到執行時期才會有關聯,這與 hoisting 有關係。

函式也可以當作 object property

因為在 JS,函式就是 value,所以也可以當作物件的 property

    var whatToSay = {
        greeting() {
            console.log('Hello!');
        },
        question() {
            console.log('What is your name?');
        },
        answer() {
            console.log('I am Cheryl.');
        }
    }

greeting(), question(), 和 answer() 三個函式,由 whatToSay 物件來管理,因此想取得其中的 value,用 whatToSay.greeting() 就可以取得 greeting 的 value。

在 JS,functions 還有許多種格式,可以參考這裡

今天份的學習到這邊。

[ 參考 ]


上一篇
[ Day 9 ] I don't know JS yet - Declaring and Using Variables
下一篇
[ Day 11 ] I don't know JS yet - Comparisons Part 1
系列文
I don't know JS yet30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言